Vytvoreni nove tridy - zacatecnicky dotaz
Otázka od: 3dimension
28. 12. 2002 15:48
Dobry den,
s delphi zacinam a tak sem si chtel vytvorit vlastni tridu.
Deklarace je tady:
TMyClass = class (TObject)
private
FX: Integer;
procedure SetX(const Value: Integer);
public
property X : Integer read FX write SetX;
end;
...
...
procedure TMyClass.SetX(const Value: Integer);
begin
FX := Value;
end;
Pokud ale udelam tlacitko a provedu tohle:
procedure TForm1.Button1Click(Sender: TObject);
var
M : TMyClass;
begin
M.Create;
M.Free;
end;
talcitko zmizi.
Pokud promenou me tridy vytvarim v:
procedure TForm1.FormCreate(Sender: TObject);
begin
P.Create;
end;
tak se objevi nasleduji chyba:
"Project Project1.exe raised exception class
EAccessViolation with message 'Access violation at address 00402F85 in
module 'PROJECT1.EXE'. Read of address FFFFFFFF'. Process stopped. Use Step
or Run to continue."
Mohl byste mi nekdo poradit kde delam chybu ?
Predem dekuji.
Odpovedá: MarekFi
28. 12. 2002 17:11
3dimension wrote:
> Dobry den,
> s delphi zacinam a tak sem si chtel vytvorit vlastni tridu.
> Deklarace je tady:
>
> TMyClass = class (TObject)
> private
> FX: Integer;
> procedure SetX(const Value: Integer);
> public
> property X : Integer read FX write SetX;
> end;
> ...
>
> ...
> procedure TMyClass.SetX(const Value: Integer);
> begin
> FX := Value;
> end;
>
> Pokud ale udelam tlacitko a provedu tohle:
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> M : TMyClass;
> begin
> M.Create;
to je chyba, tady musi byt:
M := TMyClass.Create;
> M.Free;
> end;
>
> talcitko zmizi.
>
>
> Pokud promenou me tridy vytvarim v:
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> P.Create;
> end;
To bude asi stejna chyba, ale nenapsal jsi jak je P deklarovane.
Marek
Odpovedá: Vaclav Riha - Soft Consult
28. 12. 2002 17:11
Bezna chyba. Obcas se stane kazdymu. Kdyz uz se stane, tak se tezko hleda
(projevuje se jinde, nez vlastne vznikla).
var
M : TMyClass;
begin
M.Create; //spatne
M:=TMyClass.Create; //spravne
S pozdravem Vaclav Riha
Dobry den,
s delphi zacinam a tak sem si chtel vytvorit vlastni tridu.
Deklarace je tady:
TMyClass = class (TObject)
private
FX: Integer;
procedure SetX(const Value: Integer);
public
property X : Integer read FX write SetX;
end;
...
...
procedure TMyClass.SetX(const Value: Integer);
begin
FX := Value;
end;
Pokud ale udelam tlacitko a provedu tohle:
procedure TForm1.Button1Click(Sender: TObject);
var
M : TMyClass;
begin
M.Create;
M.Free;
end;
talcitko zmizi.
Pokud promenou me tridy vytvarim v:
procedure TForm1.FormCreate(Sender: TObject);
begin
P.Create;
end;
tak se objevi nasleduji chyba:
"Project Project1.exe raised exception class
EAccessViolation with message 'Access violation at address 00402F85 in
module 'PROJECT1.EXE'. Read of address FFFFFFFF'. Process stopped. Use Step
or Run to continue."
Mohl byste mi nekdo poradit kde delam chybu ?
Predem dekuji.